package com.aceitunaproject.shared.exceptions.gamerules;

/**
 * @author Federico Bergstein
 * 
 *         Lists possible rule violations
 * 
 *         Naming Convention: Start with the name of the action that can violate
 *         the rule
 */
public enum EnumIllegalAction {
	// Permission related illegal actions
	PERMISSION_UNIT_NOT_UNDER_CONTROL,

	// Move unit possible illegal actions
	MOVE_TILE_OUT_OF_RANGE, MOVE_TILE_INACCESIBLE_FOR_UNIT, MOVE_TILE_OCCUPIED_BY_OTHER_PLAYER, MOVE_UNIT_OUT_OF_TIME,

	// Build Installation possible illegal actions
	BUILD_INSTALLATION_UNIT_UNABLE_TO_BUILD_INSTALLATION_TYPE, BUILD_INSTALLATION_INSUFICIENT_MATERIALS, BUILD_INSTALLATION_GOOD_SOURCE_NOT_UNDER_CONTROL, BUILD_INSTALLATION_TILE_INSTALLATION_LIMIT_REACHED, BUILD_INSTALLATION_UNIT_CONTROLLER_LACKS_REQUIRED_SCIENTIFIC_ADVANCE, BUILD_INSTALLATION_MUST_BE_BUILT_IN_UNITS_CURRENT_POSITION_OR_ADJACENT_TILE, BUILD_INSTALLATION_CANNOT_BE_BUILT_IN_TILE_TERRAIN, BUILD_INSTALLATION_INSTALLATION_TYPE_NOT_FOUND,

	// Build settlement possible illegal actions
	BUILD_SETTLEMENT_MUST_BE_BUILT_IN_UNITS_CURRENT_POSITION, BUILD_SETTLEMENT_UNIT_DOES_NOT_HAVE_NEEDED_ABILITY, BUILD_SETTLEMENT_SETTLEMENT_ALREADY_EXISTS_IN_TILE, BUILD_SETTLEMENT_SETTLEMENTS_CANNOT_BE_BUILT_IN_THIS_TILE,

	// Cargo related illegal actions
	CARGO_INSUFICIENT_CARGO,
	
	//Recruit unit related illegal actions
	RECRUIT_UNIT_SETTLEMENT_TOO_SMALL,
	
	//Attack unit related illegal actions
	ATTACK_UNIT_UNIT_OUT_OF_RANGE, ATTACK_UNIT_UNIT_CANNOT_OCCUPY_ENEMY_TILE, ATTACK_UNIT_OUT_OF_TIME

}